package net.imagine.core;

import java.io.IOException;
import java.io.InputStream;

/**
 * 图片处理任务基类接口，需要做处理的图片必须实现该类
 * 
 * @author wuqh
 * 
 */
public interface ImageProcessTask {
	/**
	 * 获取图片数据的输入流，也可以使用{@link #getData()}直接获取二进制数据
	 * 
	 * @return 图片数据的输出流
	 */
	public InputStream getInputStream() throws IOException;

	/**
	 * 获取图片文件的文件名
	 * 
	 * @return 图片文件的文件名
	 */
	public String getFilename();

	/**
	 * 获取图片文件的文件大小
	 * 
	 * @return 图片文件的文件大小
	 */
	public long getFileSize();

	/**
	 * 获取图片文件的二进制数据，也可以使用{@link #getInputStream()}直接获取输入流
	 * 
	 * @return 图片文件的二进制数据
	 */
	public byte[] getData() throws IOException;

	/**
	 * 本地储存路径，如果还没有写入本地则返回null
	 * 
	 * @return 本地存放的路径，或者null如果还未在本地存放
	 */
	public String getLocalStorePath();

	/**
	 * 设置本地储存路径
	 * 
	 * @param localStorePath
	 *            本地存放路径
	 */
	public void setLocalStorePath(String localStorePath);
	
	/**
	 * 远程文件的文件Id，带有后缀名（如果有）
	 * */
	public String getRemoteFileKey();
}